<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
//         //创建一个对象
//         let a = new Object();
//         //添加对象的属性
//         a.name = "张三";
//         a.age = 20;
//         a.phone = "13920392839";
//         //添加对象的方法
//         a.speak = function (){
//             alert("说话");
//         }
//
//         // alert(a["name"]+"   "+a.age+"   "+a.phone);
//         // a.speak();
//         //删除对象的属性
//         delete a.phone;
//         // alert(a.name+"   "+a.age+"   "+a.phone);
// //------------------------------------------------
//         //遍历对象中的属性列表
//         for(var fieldName in a ){
//             console.log("属性名："+fieldName+"  属性值："+a[fieldName]);
//         }

        //---------------------------------
        // //定义一个没有属性的对象。相当于new Object()
        // let obj = {};
        // //定义带属性的对象，属性名可以加引号，可以不加
        // let myobj = {name:"张三","age":20,sex:"男",speak:function (){
        //     alert("ddd");
        //     }};
        // myobj.speak();
        // //返回指定对象的json格式字符串
        // var str = JSON.stringify(myobj);
        // alert(str);
        //
        // let a = new Object();
        // //添加对象的属性
        // a.name = "张三";
        // a.age = 20;
        // a.phone = "13920392839";
        // alert(JSON.stringify(a));

    // let str = '{"name":"李四","age":30}';
    // //将字符串转化为json对象
    // let obj = JSON.parse(str);
    // alert(obj.name+"   "+obj.age);

    // let dog = {name:"旺财",age:3};
    // //速写属性，当属性名和属性值一样时，可以只写属性名
    // let man = {name:"惨哥",age:32,dog};
    // alert(man.name +"  "+man.dog.name);

    // let dog = {name:"旺财",age:3,color:"黄色"};
    // alert("姓名："+dog.name+" 年龄："+dog.age+"  颜色："+dog.color);
    // //模版字符串，${}可以将变量值插入其中
    // alert(`姓名：${dog.name}  年龄：${dog.age}  颜色：${dog.color}`);

    // //定义长度为0的数组
    // let arr = new Array();
    // let myarray = [];
    // //定义有初始值的数组
    // let arrayObj = [1,2,3,4,5,6];
    // //数组的length属性可以赋值。
    // arrayObj.length = 8;
    //
    // //得到数组长度
    // alert(arrayObj+"    "+arrayObj.length);

    // let  arr = [1,2,3];
    // arr[5] = 8;
    // alert(arr )
    // alert(arr[4]);

    // let arr = [1,2,3];
    // //类似于java集合中的add，在数组尾部追加元素
    // arr.push(8);
    // console.log(arr);

    // let arr = [1,2,3,4,5,6];
    // //从下标为3开始删除1个元素
    // arr.splice(3,1);
    // //在下标为2的元素前，添加指定元素
    // arr.splice(2,0,12,13);
    // //从下标为1开始，删除2个元素，替换成新的元素。
    // arr.splice(1,2,"ok","no")
    // console.log(arr);

    let  arr = [
        {name:"张三",age:30},
        {name:"李四",age:40},
        {name:"刘三",age:28},
        {name:"吴六",age:32}
    ];
    //遍历
    // for(var i=0;i<arr.length;i++){
    //     var n = arr[i];
    //     console.log(n.name+"   "+n.age);
    // }
    // console.log("-----------");
    // //采用forEach遍历。n表示数组中的一个元素
    // arr.forEach( n =>{
    //     console.log(n.name+"  "+n.age)
    // });

    //查找
    //得到指定元素的下标，如果没有找到返回-1
    // let index = arr.findIndex(n => n.name == "刘三");
    // console.log(index);

    // //按条件查找指定元素。如果没有找到，返回undefined
    // var obj = arr.find(n => n.name == "刘三姐");
    // console.log(obj);

    // //筛选，返回满足指定条件的元素
    // let list = arr.filter(n => n.age>=30);
    // console.log(list);

//     //排序。a和b表示数组中的元素。
// // 当表达式返回正数表示第一个元素大于第二个元素
// // 当表达式返回负数表示第一个元素小于第二个元素
// // 当表达式返回0 表示第一个元素等于第二个元素
//     arr.sort((a,b) => b.age - a.age );
//     console.log(arr);

        var list = arr.map( n => n.name);
        console.log(list);
    </script>
</head>
<body>

</body>
</html>